vue的数据模型:js对象(当进行修改时,视图层进行更新)
工作原理总结如下:
(图示)
![图片描述][1]
1. 追踪变化
作为 data 选项,普通的 JavaScript 对象传入 Vue 实例,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter
1)(用户不可见,但是在内部它们让 Vue 能够追踪依赖,在属性被访问和修改时通知变更)
2)(每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把“接触”过的数据属性记录为依赖。之后当依赖项的 setter 触发时,会通知 watcher,从而使它关联的组件重新渲染)
2.检测变化
Vue 无法检测到对象属性的添加或删除;
注:
1)Vue 会在初始化实例时对属性执行 getter/setter 转化,所以**属性必须在 data 对象上存在才能让 Vue 将它转换为响应式的**
2)Vue 不允许动态添加根级别的响应式属性
**Vue.set(object, propertyName, value)** 方法可以向嵌套对象添加响应式属性
还可以使用 **vm.$set** 实例方法,这也是全局 Vue.set 方法的别名
3.声明响应式属性
注:Vue 不允许动态添加根级响应式属性,必须**在初始化实例前声明所有根级响应式属性**
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。